/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controleur;

import application.Critique;
import application.CritiqueBean;
import application.Facade;
import application.LivreBean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author James
 */
public class CommandeEcrireCritique implements Commande {

    private String next;
    
    public CommandeEcrireCritique(String next) {
        this.next = next.toLowerCase();
    }

    @Override
    public String executer(HttpServletRequest req, HttpServletResponse res) throws CommandeException {
        Facade f = new Facade();
        int rowCount;
        Critique c;
        String isbn = req.getParameter("isbn");
        String idMembre = req.getParameter("idMembre");
        String critique = req.getParameter("critiqueAEcrire");
        String cote = req.getParameter("cote");
        String pageSuivante = next;

        next = ConstantesWeb.PAGE_ERREUR;

        if (isbn == null || idMembre == null || critique == null || cote == null) {
            metteMessageErreurStandard(req);
        } else {

            Double coteDouble = Double.parseDouble(cote);

            cote = coteDouble == 10 ? "10" : String.valueOf(coteDouble);

            c = new Critique();

            c.setCote(cote);
            c.setCritique(critique);
            c.setIdMembre(idMembre);
            c.setIsbn(isbn);

            rowCount = f.ecrireCritique(c.getCritiqueBean());

            if (rowCount == 0) {
                req.setAttribute(ConstantesWeb.ATTRIBUT_ERREUR, "Erreur de base de données.");
            } else {
                LivreBean livreBean = f.getLivre(isbn);

                req.setAttribute(ConstantesWeb.VALEUR_LIVRE, livreBean);

                next = pageSuivante;// + "?" + ConstantesWeb.VALEUR_LIVRE_ISBN + "=" + isbn;
            }
        }
        return next;
    }

    private void metteMessageErreurStandard(final HttpServletRequest req) {
        req.setAttribute(ConstantesWeb.ATTRIBUT_ERREUR, "Votre critique n'a pas été publiée.");
    }
}
